package com.epam.debrecen.hackathon.com;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.epam.debrecen.hackathon.ai.model.Card;
import com.epam.debrecen.hackathon.ai.model.Hand;

public class ServerState {

	private PlayerState playerState;
	private Integer round = 0;
	private Integer battle;
	private Hand hand;
	private List<String> order;
	private String currentZone;
	private String currentPlayer;
	private Card faceUpCard;
	private boolean gameStart;
	private boolean gameEnd;
	private boolean roundEnd;
	private boolean battleEnd;
	private boolean battleStart;
	private boolean roundStart;
	private String battleEndPlayer;
	private String protectedRegion;
	private boolean bishopChange;
	private final Map<String, Card> cards = new HashMap<String, Card>();

	public boolean isBishopChange() {
		return bishopChange;
	}

	public void setBishopChange(boolean bishopChange) {
		this.bishopChange = bishopChange;
	}

	public PlayerState getPlayerState() {
		return this.playerState;
	}

	public void setPlayerState(PlayerState playerState) {
		this.playerState = playerState;
	}

	public Integer getRound() {
		return this.round;
	}

	public void setRound(Integer round) {
		this.round = round;
	}

	public Integer getBattle() {
		return this.battle;
	}

	public void setBattle(Integer battle) {
		this.battle = battle;
	}

	public Hand getHand() {
		return this.hand;
	}

	public void setHand(Hand hand) {
		this.hand = hand;
	}

	public List<String> getOrder() {
		return this.order;
	}

	public void setOrder(List<String> order) {
		this.order = order;
	}

	public String getCurrentZone() {
		return this.currentZone;
	}

	public void setCurrentZone(String currentZone) {
		this.currentZone = currentZone;
	}

	public boolean isGameStart() {
		return this.gameStart;
	}

	public void setGameStart(boolean gameStart) {
		this.gameStart = gameStart;
	}

	public boolean isGameEnd() {
		return this.gameEnd;
	}

	public void setGameEnd(boolean gameEnd) {
		this.gameEnd = gameEnd;
	}

	public void setRoundStart(boolean roundStart) {
		this.roundStart = roundStart;
	}

	public void setBattleStart(boolean battleStart) {
		this.battleStart = battleStart;

	}

	public void setBattleEnd(boolean battleEnd) {
		this.battleEnd = battleEnd;

	}

	public void setRoundEnd(boolean roundEnd) {
		this.roundEnd = roundEnd;
	}

	public boolean isRoundEnd() {
		return this.roundEnd;
	}

	public boolean isBattleEnd() {
		return this.battleEnd;
	}

	public boolean isBattleStart() {
		return this.battleStart;
	}

	public boolean isRoundStart() {
		return this.roundStart;
	}

	public void setBattleEndPlayer(String battleEndPlayer) {
		this.battleEndPlayer = battleEndPlayer;
	}

	public String getBattleEndPlayer() {
		return this.battleEndPlayer;
	}

	public void setProtected(String protectedRegion) {
		this.protectedRegion = protectedRegion;
	}

	public String getProtectedRegion() {
		return this.protectedRegion;
	}

	public void setProtectedRegion(String protectedRegion) {
		this.protectedRegion = protectedRegion;
	}

	public void setCurrentPlayer(String player) {
		this.currentPlayer = player;
	}

	public String getCurrentPlayer() {
		return this.currentPlayer;
	}

	public Card getFaceUpCard() {
		return this.faceUpCard;
	}

	public void setFaceUpCard(Card faceUpCard) {
		this.faceUpCard = faceUpCard;
	}

	public void addCard(String name, Card card) {
		this.cards.put(name, card);
	}

	public Map<String, Card> getCards() {
		return this.cards;
	}

	@Override
	public String toString() {
		return "ServerState [playerState=" + this.playerState + ", round=" + this.round + ", battle=" + this.battle + ", hand=" + this.hand + ", order=" + this.order + ", currentZone="
				+ this.currentZone + ", currentPlayer=" + this.currentPlayer + ", faceUpCard=" + this.faceUpCard + ", gameStart=" + this.gameStart + ", gameEnd=" + this.gameEnd + ", roundEnd="
				+ this.roundEnd + ", battleEnd=" + this.battleEnd + ", battleStart=" + this.battleStart + ", roundStart=" + this.roundStart + ", battleEndPlayer=" + this.battleEndPlayer
				+ ", protectedRegion=" + this.protectedRegion + ", cards=" + this.cards + "]";
	}
}
